package bookstore;

import java.sql.SQLException;
import java.util.Date;
import java.util.Map;


import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;

/**
 * Orderインスタンスを取り扱うクラスです
 */
public class OrderManager {

    public void createOrder(HttpSession session, Book[] books) {
        Order order = new Order();
        OrderItem[] items = new OrderItem[books.length];
        for (int i = 0; i < items.length; i++) {
            items[i] = new OrderItem();
            items[i].setBook(books[i]);
        }
        order.setItems(items);
        session.setAttribute(Globals.SESSION_ORDER, order);
    }

    public Order getSessionOrder(HttpSession session) {
        return (Order) session.getAttribute(Globals.SESSION_ORDER);
    }

    // 保持するデータをDBに保存
    public void store(HttpSession session) throws SQLException {
        Order order = getSessionOrder(session);
        order.store();
    }

    // DBから登録済みのデータを取得
    public Order[] loadAllData(ServletContext context) throws SQLException {
        return Order.loadAllData();
    }

    // 集計結果が格納されたjava.util.Mapインスタンスを取得
    public Map<Date, Integer> calculateMonthlyTotal(ServletContext context)
            throws SQLException {
        return Order.calculateMonthlyTotal(loadAllData(context));
    }
}